/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: XMQ
 * Date: 2022-05-06
 * Time: 14:13
 */
//数据类型和变量
public class TestDemo {
    /*
    字符串型 C语言中没有的数据类型
     */
    public static void main(String[] args) {
        String a = "abcd";// java中字符串后没有'/0'
        System.out.println(a);
        System.out.println(a.length());
        System.out.println(a.toUpperCase());
    }
    /*
    大的数据类型向 小的数据类型转换时需要你确认负责
     */
    public static void main11(String[] args) {
        long a = 10;
        long b = 10;
        int c = (int)(a+b);
        System.out.println(c);
    }
    /*
    显性类型转换
     */
    public static void main10(String[] args) {
        int a = 10;
        int b = 20;
        byte c = (byte)(a+b);
        System.out.println(c);
    }
    /*
    【隐形类型转换】
     */
    public static void main9(String[] args) {
        byte a = 10;
        int b = 20;
        int c = a+b;
        System.out.println(c);
    }
    /*
    boolean类型 非常特殊 JVM中没有给定 明确大小
    boolean只有true flase 没有非0为真  0为假
     */
    public static void main8(String[] args) {
        boolean flag1 = true;
        boolean flag2 = false;
        byte a = 1;
        byte b = 2;

        System.out.println(flag1);
        System.out.println(flag2);
//        System.out.println(flag1+1); //不能转换为整型
    }
    /*
    byte
    字节类型 2个字节 -128-》127 定义的字面常量不能超过类型的数值大小范围
     */
    public static void main7(String[] args) {
        byte a = 127;
        //byte b = 128;
        byte b = (byte)(a+1);
        System.out.println(a);
        System.out.println(b);//跟C语言的数据存储一样
        System.out.println("最大值:"+Byte.MAX_VALUE);
        System.out.println("最小值:"+Byte.MIN_VALUE);
    }
    /*
    char
    字符型 2个字节  0-65535  Java使用Unicode字符集  可以表示 中文 拉丁文……相当于包含了ASCII
    ASCII 只能表示英文
    包装类: character
     */
    public static void main6(String[] args) {
        char a = 'a';
        char b = '刘';
        char c = 97;
        //char a1 = -1;不能表示负数
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
//        System.out.println(""+Character.MAX_VALUE);
    }
    /*
    double
    双精度浮点型 8个字节
     */
    public static void main5(String[] args) {
        //注意小数运算
        int a = 1;
        int b = 2;
        System.out.println(a/b);//输出0
        System.out.println(a*1.0/b);
        double a1 = 1;
        double b1 = 2;
        System.out.println(a1/b1);
        double d = 19.9;
        System.out.println(a);
        System.out.println("最大值:"+Double.MAX_VALUE);
        System.out.println("最小值:"+Double.MIN_VALUE);
    }
    /*
    float
    单精度浮点型 4个字节
     */
    public static void main4(String[] args) {
        //float a = 19.9;  19.9默认为double型
        float a = 19.9f;
        System.out.println(a);
        System.out.println("最大值:"+Float.MAX_VALUE);
        System.out.println("最小值:"+Float.MIN_VALUE);
    }
    /*
    short
    短整型 2个字节  2^16-1 -》 -2^16
    没有符号之分
     */
    public static void main3(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println("最大值:"+Short.MAX_VALUE);
        System.out.println("最小值:"+Short.MIN_VALUE);
    }
    /*
    long :
    长整型 8个字节  2^64-1 -》 -2^64  也是无论64位还是32位
    也是没有符号之分
     */
    public static void main2(String[] args) {
        //long a = 10; 10默认为整型 要在后面加个L
        long a = 10L;
        System.out.println(a);
        System.out.println("最大值:"+Long.MAX_VALUE);
        System.out.println("最小值:"+Long.MIN_VALUE);
    }
    /*
    整型:
    1.大小  4个字节 【移植性强】无论你是32位还是64位都是4个字节  2^32-1 -》 -2^32
    2. 没有Unsigned Signed 之分 可以表示负数
    Interger  int plus版  包装类类型
     */
    public static void main1(String[] args) {
        //数据类型 变量名 = 数值
        int a = 10;
        System.out.println(a);
        System.out.println("最大值:"+Integer.MAX_VALUE);
        System.out.println("最小值:"+Integer.MIN_VALUE);
        //在java中，局部变量必须初识化，不初始化不能通过
        int b = 0 ;
        System.out.println(b);
    }
}
